The invention relates to a bridge device for connecting a plurality of self-contained communication networks around which data is transmitted in frames which include control information defining at least the identity of the destination for data in the frame, each network having at least one end station.
Examples of networks to which the invention apply include token passing rings as well as FDDI and ATM networks.
In typical local area network installations, it has been possible in the past to use a single network to achieve communication between a number of end stations such as PCs, file servers and the like. However, with the need to provide more and more end stations, it has been the practice to divide the overall system up into a number of individual local area networks (for example one per floor) and to connect the networks together via bridge and other devices. Most of the time, an end station on a network will only wish to transmit to another end station on the same network. However, there will be occasions when communication between end stations on different networks will be required. For example, an end station on a network may require access to a file server on another network. To achieve this, the end station constructs a data frame including control information which is addressed to the final destination on the other network. This frame is then sent around the first network until it reaches the bridge which recognises that the frame is destined for an end station on another network and so diverts the frame into its memory. A controller within the bridge device reviews the frame once it is received in the memory to determine on which output port it should be directed (since typically a bridge device will be connected to more than two networks), and in some cases will make changes in the control information, following which the frame is sent out onto the desired output port for onward transmission. The destination end station may be on the output network or the frame may have to traverse one or more further bridge devices.
The routing of a frame through a bridge device is generally carried out using one of two techniques. In Source Routing, prior to transmitting a frame, an end station transmits a special Source Route Broadcast frame (to which data could also be attached) which is transmitted to all end stations on all networks and, as it passes through each bridge device, is modified to indicate the network on to which it is being transmitted. The source route broadcast frame includes the desired destination end station identifier and once that end station receives the broadcast frame it indicates its presence and the frame is returned to the originating end station. The originating end station can determine from the information now contained on the returned frame the identities of the. various networks through which the frame has passed and this information is incorporated into the data frame which is to be sent so as to control the routing of the data frame.
In Transparent Bridging, each bridge device contains a look-up table which is continuously updated with information defining for each end station on all the networks the output port of the bridge concerned to which a frame directed to that end station should be coupled. This information is built up by the bridge by monitoring source addresses on incoming frames.
Recently, it has been proposed to incorporate a common memory or storage means through which all data is transmitted. Examples include WO-A-9504970, U.S. Pat. No. 5,307,345, and U.S. Pat. No. 5,400,326.
This enables certain types of data to be transmitted through the bridge much more quickly than has previously been possible. This is achieved by providing common storage means through which all the data passes irrespective of the incoming and destination networks concerned and control means which can route incoming data to a destination network without waiting for all the data to be stored in the common storage means. Furthermore, by routing data to the destination network before the data frame has been fully stored in the common storage means, the amount of time the bridge device takes to transfer data from one network to another can be considerably reduced. This technique is known as xe2x80x9ccut-throughxe2x80x9d.
Problems can arise, however, with the use of a common memory in handling large volumes of data.
In accordance with a first aspect of the, present invention, a bridge device for connecting a plurality of communication networks around which data is transmitted in frames which include control information defining at least the identity of a destination for data in the frame, each network having at least one end station, comprises a corresponding plurality of data coupling means for connection to respective ones of the networks, each data coupling means including receive and transmit interfaces for respectively receiving data from and transmitting data onto the connected network; common storage means connected to all the data coupling means for receiving data being transmitted from one network to another; and control means for controlling the routing of data through the bridge device via the common storage means, the control means causing incoming data to be routed to a destination network before the data has been fully stored in the common storage means, if predetermined conditions are satisfied, the control means being adapted to monitor the amount of free space in the common storage means and to prevent the supply of data to the common storage means if the available free space is less than a predetermined amount.
We have devised a significant improvement upon the known bridge device by causing the control means to monitor the amount of free space in the common storage means and thus avoid breakdown of the device and/or the connected networks when too much data is stored in the common storage means.
The control means could be implemented in a variety of ways but in the preferred example includes a free buffer pointer queue store which contains a set of pointers indicating addresses in the common storage means which are available for storing incoming data. Typically, this queue store will constitute a FIFO which is replenished with pointers relating to the addresses of frames which have been transmitted out of the bridge device from the common storage means. This provides a particularly simple way of utilising the common storage means.
When the control means is implemented in this manner, the content of the common storage means can be determined by monitoring the free buffer pointer queue store.
The predetermined conditions may include, for example, ensuring that the input and output networks operate at compatible speeds so that the leading end of a data frame can be output on a destination network while the trailing end is still being input to the common storage means. Typically, this will require the output network to operate s at least the same speed or a slower speed than the input network.
Another predetermined condition is to ensure that the data coupling means associated with the desired output network is enabled.
There may also be circumstances in which the device does not permit cut-through. This would be, for example, where there is a need to check the integrity of the frame before it is transmitted or where some processing needs to be carried out on the data in the frame before it is transmitted.
Although each data coupling means could be connected individually to the common storage means, preferably the device further comprises a receive bus connected to the receive interfaces of all the data coupling means, the receive bus being connected to an input of the common storage means; and a transmit bus connected to the transmit interfaces of the data coupling means and to an output of the common storage means. In this way, the control means and common storage means of the bridge device are separated from the data coupling means by receive and transmit data buses which enable the device to be used in an optimum manner.
For example, each receive interface preferably determines from the control information of an incoming frame whether it needs to be processed by the bridge device in which case the frame is supplied to the receive data bus but otherwise is supplied directly to the corresponding transmit interface of the same data coupling means for onward transmission around the network. In this way, the components of the bridge device are only fully utilised when a data frame is destined for the bridge device.
A problem can arise when using a bridge device utilising a common storage means, such as according to the first aspect of the invention, when an aborted or otherwise damaged frame is transmitted through the device. Such a frame can be generated for example when the station on a data network sending the frame may abort transmission of the frame sometime after transmission has commenced. In the case where this frame is being forwarded across a bridge device using cut-through technology, the transmission of this frame from the output port may have already commenced before it is detected that the frame has been aborted or otherwise severely damaged. In this case it is desired that the transmission of the frame from the output port be terminated in such a way as will minimise the disruption to the output ring.
In a typical network protocol, serious disruption can occur if an aborted frame is detected on the network requiring a significant time for the network to re-establish normal operation. For this reason, it is desirable that if an aborted frame is received on one port, it should not be transmitted as an aborted frame on any port(s) to which the frame is being forwarded.
In order to overcome this problem, the data coupling means responds to the passage of an aborted or damaged frame by causing the frame to be output onto the destination network with incorrect check data.
Most network protocols include, as part of the frame format, check data in the form of a checksum or cyclic-redundancy-check (CRC), which is used by the receiving station to ensure that no data corruption has occurred during the transmission of the frame. Frames with invalid checksums or CRCs cause comparatively little disruption on typical networks.
In this proposal a frame received into one port as an aborted or (severely) damaged frame is converted into a frame with an intentionally wrong checksum or CRC on the output port by detecting the abort condition on the input port, and ensuring that the frame is sent out from the output ports with a bad checksum or CRC.
This can be done in either of two ways: firstly, the frame being transmitted may be monitored, and terminated with no further intervention should the last bytes in the frame correspond to an incorrect checksum or CRC for the part-frame already transmitted. In this case, should the last bytes in the frame correspond to a correct checksum or CRC for the part-frame already transmitted, the transmission of the frame must be aborted. This scheme is the simpler to implement, and has the effect of reducing the number of aborted frames forwarded as aborted frames by a factor of the number of-possible different CRC/checksum values.
The second, more general technique is to append an intentionally incorrect checksum or CRC onto the end of the frame, and then transmit a normal end-of-frame sequence. This effectively converts an aborted or severely damaged frame received at the input port into a frame with an incorrect checksum/CRC on the output port(s), significantly reducing the amount of disruption on the output network(s).
As mentioned above, the networks to which the bridge device can be connected could take a variety of forms including token passing rings, FDDI and ATM.
When common storage means is used in a bridge device, it is important to be able to utilise such common storage means in a flexible manner so as to optimise its size. In theory, it would be preferred if a single address could be used to point to each received data frame. Typically, on start up the networks set a maximum size of a data frame and this could be used to set a buffer size within the common storage means, each buffer being defined by a continuous sequence of addresses. The base address of each buffer can then be used to point to the buffer. However, in practice, many data frames are considerably smaller than the maximum possible size and this leads to a significant wastage of storage space. In practice, therefore, a frame is stored in a variety of locations within a store (usually in a set of discontinuous storage locations) and a separate index (known as a linked list) must be kept containing pointers to each location in the store holding data corresponding to different portions of each frame. The problem with this approach is that it leads to the need for a large index store.
In accordance with a second aspect of the present invention, a data storage system for storing data frames supplied from or to be supplied to a data communication network comprises a memory defining a number of buffers, each buffer having a number of data storage locations at a corresponding number of addresses arranged in sequence; control means for loading data in to locations in the memory; and a pointer store for storing memory address pointers indicating addresses of the memory at which data can be stored, wherein each pointer includes a buffer address indicating the start address of a respective one of the memory buffers, and an offset value indicating the address of the first of a sequence of locations within the buffer in which a data frame can be stored, the control means selecting a buffer pointer from the pointer store to indicate a region of memory in which an incoming data frame can be stored, updating the offset value of-the pointer to indicate a sequence of locations remaining unused in the buffer if the sequence of locations thereby indicated is sufficient for storing another data frame having a predetermined maximum size, and returning the buffer pointer to the pointer store.
With this aspect of the invention, storage space is utilised much more effectively and a single buffer can be used to store more than one data frame but with all portions of the data frame being stored in a continuous sequence of locations.
In general, each start address will define a buffer with a size substantially equal to the maximum permissable size of a data frame.
Typically, the maximum size of a data frame will be 18 K bytes and a buffer may have a size of 32 K bytes. The buffer may be divided into smaller 1 K byte portions whose addresses define potential offset values. Typically, the buffer comprises a RAM.
Preferably, the control means is adapted to prevent the corresponding buffer pointer from being returned to the pointer store until all data frames in the buffer have been transmitted.
This second aspect of the invention is particularly suitable for implementing the common storage means of the first aspect of the invention.
A function which bridge devices are often required to undertake is to handle source route broadcast frames. In source routing, when an end station wishes to transmit data to an end station on another network, it needs initially to determine the route that the data frame must follow. To achieve this, the source end station generates a source route broadcast frame. This frame is sent out to all end stations which are coupled to the source network via bridges. When a bridge device receives a source route broadcast frame, it retransmits that frame onto all networks to which it is connected. At the same time, it modifies the frame broadcast on each network to indicate the identity of the network (ring out number) and the bridge device number or identity. The broadcast frame contains the final, desired destination address and once a frame is received at the appropriate destination end station, this end station generates a return frame, which is substantially a copy of the broadcast frame but indicating that it has been received by the desired end station (and often including other information), which is returned to the source end station. The source end station then incorporates the list of network identities contained within the returned frame into the data frame to define the route for the data frame.
One of the problems with source routing is the time and complexity required of bridge devices to transmit such broadcast frames to all networks with each frame being differently modified to indicate the identity of the network onto which it is transmitted.
In accordance with a third aspect of the present invention, a bridge device for connecting a plurality of self-contained communication networks around which data is transmitted in frames which include control information defining at least the identity of a destination for data in the frame, each network having at least one end station, comprises a corresponding plurality of data coupling means for connection to respective networks, each data coupling means including receive and transmit interfaces for respectively receiving data from and transmitting data onto the connected network; common storage means connected to all the data coupling means for receiving data being transmitted from one network to another; and control means for controlling the routing of data through the bridge device via the common storage means, wherein the control means responds to the arrival of a source route broadcast frame from one network by:
i) causing the frame to be stored in the common storage means; and,
ii) instructing each data coupling means to transmit the source route broadcast frame onto its network, by supplying the address of the stored frame to the data coupling means,
and wherein each data coupling means is responsive to said instruction to modify the frame, prior to transmission, by adding at least the identity of a network onto which the frame is to be transmitted.
In this aspect of the invention, the arriving source route broadcast frame is stored once in the common storage means and the address of that frame is supplied to each data coupling means. The data coupling means then simply has to access the common storage means when it is ready to transmit the frame and as it handles the frame (either on the fly or by temporarily storing it), it modifies part of the frame to incorporate at least the identity of the network onto which the frame is being transmitted. In addition, the frame may be modified with the bridge device identity (or number).
The control means could generate instructions to the data coupling means in a variety of ways including, for example, sending a separate control instruction to each data coupling means. Preferably, however, the control means is adapted to place the instruction in a header prepended to the frame in the common storage means, the data coupling means being adapted to remove the prepended header prior to transmission and to respond to the instruction in the prepended header. This provides a very convenient way of instructing each data coupling means by utilising a single instruction which is stored in the common storage means.
The control means releases the address of the frame in the common storage means for reuse only after the extraction of data from that address has been completed.
There are certain special cases in which bridge devices are utilised and where data frames, although apparently being addressed to the bridge device, do not, in fact, need to be fully received by the bridge device. Examples include frames which are transmitted onto a network for statistical purposes and network; control protocol messages.
Conveniently, and in accordance with a fourth aspect of the present invention, a bridge device for connecting a plurality of self-contained communication networks around which data is transmitted in frames which include control information defining at least the identity of the destination for data in the frame, each network having at least one end station, comprises a corresponding plurality of data coupling means for connection to respective networks, each data coupling means including receive and transmit interfaces for respectively receiving data from and transmitting data onto the connected network; and control means for controlling the transfer of data through and by the device, wherein the control means is adapted to add control information to a frame to be transmitted by a data coupling means if the frame, when received back by the data coupling means, is not to be returned into the bridge device, the data coupling means being adapted to remove the control information prior to transmission onto the attached network and to store the information so that on receiving the returned frame it is not forwarded into the, bridge device.
Typically, the control information is contained in a prepended header to the data frame.
It will be understood that bridge devices according to the first, second, third and fourth aspects of the invention can be used in any combination.